/**
 * @author MIAO
 * Created on 2011-10-6
 * For more information, please visit:ismiao.com
 */
package com.ismiao.designPattern.Factory.SimpleFactory;

/*
 * 简单工厂(Simple Factory)
 * 又称静态工厂方法，定义了一个用于创建对象的接口
 */
public class CarSimpleFactory {
	public static Car produceCar(String s) throws InstantiationException,
			IllegalAccessException, ClassNotFoundException {
		//这里使用Java的Reflection机制来产生实例
		//反射应用经验：得到当前类的包名，否则，要添加包名，不添加则会抛出找不到类的异常
		//考虑到我们传参数时一般只会传不带包的类名，那么可以这样处理
		String packageName = new CarSimpleFactory().getClass().getPackage().getName();
		Car car = (Car) Class.forName(packageName+"."+s).newInstance();
		// 也许你还会作一些对car属性设定之类的处理...
		// ...
		return car;
	}
}